home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / emac1927.zip / emac1927 / PROBLEMS < prev    next >
Text File  |  1994-09-10  |  46KB  |  1,140 lines

  1. This file describes various problems that have been encountered
  2. in compiling, installing and running GNU Emacs.
  3.  
  4. * You can't select from submenus (in the X toolkit version).
  5.  
  6. On certain systems, mouse-tracking and selection in top-level menus
  7. works properly with the X toolkit, but neither of them works when you
  8. bring up a submenu (such as Bookmarks or Compare or Apply Patch, in
  9. the Files menu).
  10.  
  11. This works on most systems.  There is speculation that the failure is
  12. due to bugs in old versions of X toolkit libraries, but no one really
  13. knows.  If someone debugs this and finds the precise cause, perhaps a
  14. workaround can be found.
  15.  
  16. * On HPUX 9.05 and 9.06, C-c and C-z are not turned off in the terminal driver.
  17.  
  18. This seems to be due to a bug in HPUX.  A workaround is to start Emacs
  19. after first setting the "susp" (suspend job) and "dsusp" (delayed
  20. suspend job) control characters temporarily to a character that you
  21. are not likely to type (such as C-_), and set them back after Emacs
  22. exits.  The following script should do it:
  23.  
  24.     #!/bin/sh
  25.     stty susp '^_' dsusp '^_'
  26.     emacs ${1+"$@"}
  27.     stty susp '^Z' dsusp '^Z'
  28.  
  29. * Unusable default font on SCO 3.2v4.
  30.  
  31. The Open Desktop environment comes with default X resource settings
  32. that tell Emacs to use a variable-width font.  Emacs cannot use such
  33. fonts, so it does not work.
  34.  
  35. This is caused by the file /usr/lib/X11/app-defaults/ScoTerm, which is
  36. the application-specific resource file for the `scoterm' terminal
  37. emulator program.  It contains several extremely general X resources
  38. that affect other programs besides `scoterm'.  In particular, these
  39. resources affect Emacs also:
  40.  
  41.     *Font: -*-helvetica-medium-r-*--12-*-p-*
  42.     *Background:            scoBackground
  43.     *Foreground:            scoForeground
  44.  
  45. The best solution is to create an application-specific resource file for
  46. Emacs, /usr/lib/X11/app-defaults/Emacs, with the following contents:
  47.  
  48.     Emacs*Font:    -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1
  49.     Emacs*Background:    white
  50.     Emacs*Foreground:    black
  51.  
  52. (or whatever other defaults you prefer).
  53.  
  54. These resource files are not normally shared across a network of SCO
  55. machines; you must create the file on each machine individually.
  56.  
  57. * rcs2log gives you the awk error message "too many fields".
  58.  
  59. This is due to an arbitrary limit in certain versions of awk.
  60. The solution is to use gawk (GNU awk).
  61.  
  62. * Emacs is slow using X11R5 on HP/UX.
  63.  
  64. This happens if you use the MIT versions of the X libraries--it
  65. doesn't run as fast as HP's version.  People sometimes use the version
  66. because they see the HP version doesn't have the libraries libXaw.a,
  67. libXmu.a, libXext.a and others.  HP/UX normally doesn't come with
  68. those libraries installed.  To get good performance, you need to
  69. install them and rebuild Emacs.
  70.  
  71. * Loading fonts is very slow.
  72.  
  73. You might be getting scalable fonts instead of precomputed bitmaps.
  74. Known scalable font directories are "Type1" and "Speedo".  A font
  75. directory contains scalable fonts if it contains the file
  76. "fonts.scale".
  77.  
  78. If this is so, re-order your X windows font path to put the scalable
  79. font directories last.  See the documentatoin of `xset' for details.
  80.  
  81. With some X servers, it may be necessary to take the scalable font
  82. directories out of your path entirely, at least for Emacs 19.26.
  83. Changes in the future may make this unnecessary.
  84.  
  85. * On AIX 3.2.4, releasing Ctrl/Act key has no effect, if Shift is down.
  86.  
  87. Due to a feature of AIX, pressing or releasing the Ctrl/Act key is
  88. ignored when the Shift, Alt or AltGr keys are held down.  This can
  89. lead to the keyboard being "control-locked"--ordinary letters are
  90. treated as control characters.
  91.  
  92. You can get out of this "control-locked" state by pressing and
  93. releasing Ctrl/Act while not pressing or holding any other keys.
  94.  
  95. * display-time causes kernel problems on ISC systems.
  96.  
  97. Under Interactive Unix versions 3.0.1 and 4.0 (and probably other
  98. versions), display-time causes the loss of large numbers of STREVENT 
  99. cells.  Eventually the kernel's supply of these cells is exhausted.
  100. This makes emacs and the whole system run slow, and can make other 
  101. processes die, in particular pcnfsd.
  102.     
  103. Other emacs functions that communicate with remote processes may have 
  104. the same problem.  Display-time seems to be far the worst.
  105.  
  106. The only known fix: Don't run display-time.
  107.  
  108. * On Solaris, C-x doesn't get through to Emacs when you use the console.
  109.  
  110. This is a Solaris feature (at least on Intel x86 cpus).  Type C-r
  111. C-r C-t, to toggle whether C-x gets through to Emacs.
  112.  
  113. * Error message `Symbol's value as variable is void: x', followed by
  114.   segmentation fault and core dump.
  115.  
  116. This has been tracked to a bug in tar!  People report that tar erroneously
  117. added a line like this at the beginning of files of Lisp code:
  118.  
  119.    x FILENAME, N bytes, B tape blocks
  120.  
  121. If your tar has this problem, install GNU tar--if you can manage to
  122. untar it :-).
  123.  
  124. * Link failure when using acc on a Sun.
  125.  
  126. To use acc, you need additional options just before the libraries, such as
  127.  
  128.    /usr/lang/SC2.0.1/values-Xt.o -L/usr/lang/SC2.0.1/cg87 -L/usr/lang/SC2.0.1
  129.  
  130. and you need to add -lansi just before -lc.
  131.  
  132. The precise file names depend on the compiler version, so we
  133. cannot easily arrange to supply them.
  134.  
  135. * Link failure on IBM AIX 1.3 ptf 0013.
  136.  
  137. There is a real duplicate definition of the function `_slibc_free' in
  138. the library /lib/libc_s.a (just do nm on it to verify).  The
  139. workaround/fix is:
  140.  
  141.     cd /lib
  142.     ar xv libc_s.a NLtmtime.o
  143.     ar dv libc_s.a NLtmtime.o
  144.  
  145. * Undefined symbols _dlopen, _dlsym and/or _dlclose on a Sun.
  146.  
  147. If you see undefined symbols _dlopen, _dlsym, or _dlclose when linking
  148. with -lX11, compile and link against the file mit/util/misc/dlsym.c in
  149. the MIT X11R5 distribution.  Alternatively, link temacs using shared
  150. libraries with s/sunos4shr.h.  (This doesn't work if you use the X
  151. toolkit.)
  152.  
  153. If you get the additional error that the linker could not find
  154. lib_version.o, try extracting it fromcontained in
  155. X11/usr/lib/X11/libvim.a in X11R4, then use it in the link.
  156.  
  157. * Error messages `Wrong number of arguments: #<subr where-is-internal>, 5'
  158.  
  159. This typically results from having the powerkey library loaded.
  160. Powerkey was designed for Emacs 19.22.  It is obsolete now because
  161. Emacs 19 now has this feature built in; and powerkey also calls
  162. where-is-internal in an obsolete way.
  163.  
  164. So the fix is to arrange not to load powerkey.
  165.  
  166. * In Shell mode, you get a ^M at the end of every line.
  167.  
  168. This happens to people who use tcsh, because it is trying to be too
  169. smart.  It sees that the Shell uses terminal type `unknown' and turns
  170. on the flag to output ^M at the end of each line.  You can fix the
  171. problem by adding this to your .cshrc file:
  172.  
  173.     if ($?EMACS) then
  174.         if ($EMACS == "t") then
  175.             unset edit 
  176.             stty  -icrnl -onlcr -echo susp ^Z
  177.         endif
  178.     endif
  179.  
  180. * An error message such as `X protocol error: BadMatch (invalid
  181. parameter attributes) on protocol request 93'.
  182.  
  183. This comes from having an invalid X resource, such as
  184.    emacs*Cursor:   black
  185. (which is invalid because it specifies a color name for something
  186. that isn't a color.)
  187.  
  188. The fix is to correct your X resources.
  189.  
  190. * Undefined symbols when linking on Sunos 4.1 using --with-x-toolkit.
  191.  
  192. If you get the undefined symbols _atowc _wcslen, _iswprint, _iswspace,
  193. _iswcntrl, _wcscpy, and _wcsncpy, then you need to add -lXwchar after
  194. -lXaw in the command that links temacs.
  195.  
  196. This problem seems to arise only when the international language
  197. extensions to X11R5 are installed.
  198.  
  199. * Typing C-c C-c in Shell mode kills your X server.
  200.  
  201. This happens on Linux 1.0 thru 1.04, approximately.  The workaround is
  202. to define SIGNALS_VIA_CHARACTERS in config.h and recompile Emacs.
  203. Newer Linux versions don't have this problem.
  204.  
  205. * On AIX, the Ctrl/Act key interacts strangely with Shift.
  206.  
  207. This is an AIX feature: Ctrl/Act with Shift is used for switching
  208. virtual terminals.
  209.  
  210. * src/Makefile and lib-src/Makefile are truncated--most of the file missing.
  211.  
  212. This can happen if configure uses GNU sed version 2.03.  That version
  213. had a bug.  GNU sed version 2.05 works properly.
  214.  
  215. * Slow startup on X11R6 with X windows.
  216.  
  217. If Emacs takes two minutes to start up on X11R6, see if your X
  218. resources specify any Adobe fonts.  That causes the type-1 font
  219. renderer to start up, even if the font you asked for is not a type-1
  220. font.
  221.  
  222. One way to avoid this problem is to eliminate the type-1 fonts from
  223. your font path, like this:
  224.  
  225.     xset -fp /usr/X11R6/lib/X11/fonts/Type1/
  226.  
  227. * Pull-down menus appear in the wrong place, in the toolkit version of Emacs.
  228.  
  229. An X resource of this form can cause the problem:
  230.  
  231.    Emacs*geometry:    80x55+0+0
  232.  
  233. This resource is supposed to apply, and does apply, to the menus
  234. individually as well as to Emacs frames.  If that is not what you
  235. want, rewrite the resource.
  236.  
  237. To check thoroughly for such resource specifications, use `xrdb
  238. -query' to see what resources the X server records, and also look at
  239. the user's ~/.Xdefaults and ~/.Xdefaults-* files.
  240.  
  241. * --with-x-toolkit version crashes when used with shared libraries.
  242.  
  243. On some systems, including Sunos 4 and DGUX 5.4.2 and perhaps others,
  244. unexec doesn't work properly with the shared library for the X
  245. toolkit.  You might be able to work around this by using a nonshared
  246. libXt.a library.  The real fix is to upgrade the various versions of
  247. unexec.  We hope volunteers will do this.
  248.  
  249. * `make install' fails on install-doc with `Error 141'.
  250.  
  251. This happens on Ultrix 4.2 due to failure of a pipeline of tar
  252. commands.  We don't know why they fail, but the bug seems not to be in
  253. Emacs.  The workaround is to run the shell command in install-doc by
  254. hand.
  255.  
  256. * --with-x-toolkit option configures wrong on BSD/386.
  257.  
  258. This problem is due to bugs in the shell in version 1.0 of BSD/386.
  259. The workaround is to edit the configure file to use some other shell,
  260. such as bash.
  261.  
  262. * Subprocesses remain, hanging but not zombies, on Sunos 5.3.
  263.  
  264. A bug in Sunos 5.3 causes Emacs subprocesses to remain after Emacs
  265. exits.  Sun patch # 101415-02 is part of the fix for this, but it only
  266. applies to ptys, and doesn't fix the problem with subprocesses
  267. communicating through pipes.
  268.  
  269. * Mail is lost when sent to local aliases.
  270.  
  271. Many emacs mail user agents (VM and rmail, for instance) use the
  272. sendmail.el library.  This library can arrange for mail to be
  273. delivered by passing messages to the /usr/lib/sendmail (usually)
  274. program .  In doing so, it passes the '-t' flag to sendmail, which
  275. means that the name of the recipient of the message is not on the
  276. command line and, therefore, that sendmail must parse the message to
  277. obtain the destination address.
  278.  
  279. There is a bug in the SunOS4.1.1 and SunOS4.1.3 versions of sendmail.
  280. In short, when given the -t flag, the SunOS sendmail won't recognize
  281. non-local (i.e. NIS) aliases.  It has been reported that the Solaris
  282. 2.x versions of sendmail do not have this bug.  For those using SunOS
  283. 4.1, the best fix is to install sendmail V8 or IDA sendmail (which
  284. have other advantages over the regular sendmail as well).  At the time
  285. of this writing, these official versions are available:
  286.  
  287.  Sendmail V8 on ftp.cs.berkeley.edu in /ucb/sendmail:
  288.    sendmail.8.6.9.base.tar.Z (the base system source & documentation)
  289.    sendmail.8.6.9.cf.tar.Z   (configuration files)
  290.    sendmail.8.6.9.misc.tar.Z (miscellaneous support programs)
  291.    sendmail.8.6.9.xdoc.tar.Z (extended documentation, with postscript)
  292.  
  293.  IDA sendmail on vixen.cso.uiuc.edu in /pub:
  294.    sendmail-5.67b+IDA-1.5.tar.gz
  295.  
  296. * On AIX, you get this message when running Emacs:
  297.  
  298.     Could not load program emacs
  299.     Symbol smtcheckinit in csh is undefined
  300.     Error was: Exec format error
  301.  
  302. or this one:
  303.  
  304.     Could not load program .emacs
  305.     Symbol _system_con in csh is undefined
  306.     Symbol _fp_trapsta in csh is undefined
  307.     Error was: Exec format error
  308.  
  309. These can happen when you try to run on AIX 3.2.5 a program that was
  310. compiled with 3.2.4.  The fix is to recompile.
  311.  
  312. * On AIX, you get this compiler error message:
  313.  
  314.     Processing include file ./XMenuInt.h
  315.         1501-106: (S) Include file X11/Xlib.h not found.
  316.  
  317. This means your system was installed with only the X11 runtime i.d
  318. libraries.  You have to find your sipo (bootable tape) and install
  319. X11Dev... with smit.
  320.  
  321. * You "lose characters" after typing Compose Character key.
  322.  
  323. This is because the Compose Character key is defined as the keysym
  324. Multi_key, and Emacs (seeing that) does the proper X11
  325. character-composition processing.  If you don't want your Compose key
  326. to do that, you can redefine it with xmodmap.
  327.  
  328. For example, here's one way to turn it into a Meta key:
  329.  
  330.     xmodmap -e "keysym Multi_key = Meta_L"
  331.  
  332. If all users at your site of a particular keyboard prefer Meta to
  333. Compose, you can make the remapping happen automatically by adding the
  334. xmodmap command to the xdm setup script for that display.
  335.  
  336. * C-z just refreshes the screen instead of suspending Emacs.
  337.  
  338. You are probably using a shell that doesn't support job control, even
  339. though the system itself is capable of it.  Either use a different shell,
  340. or set the variable `cannot-suspend' to a non-nil value.
  341.  
  342. * Watch out for .emacs files and EMACSLOADPATH environment vars
  343.  
  344. These control the actions of Emacs.
  345. ~/.emacs is your Emacs init file.
  346. EMACSLOADPATH overrides which directories the function
  347. "load" will search.
  348.  
  349. If you observe strange problems, check for these and get rid
  350. of them, then try again.
  351.  
  352. * After running emacs once, subsequent invocations crash.
  353.  
  354. Some versions of SVR4 have a serious bug in the implementation of the
  355. mmap () system call in the kernel; this causes emacs to run correctly
  356. the first time, and then crash when run a second time.
  357.  
  358. Contact your vendor and ask for the mmap bug fix; in the mean time,
  359. you may be able to work around the problem by adding a line to your
  360. operating system description file (whose name is reported by the
  361. configure script) that reads:
  362. #define SYSTEM_MALLOC
  363. This makes Emacs use memory less efficiently, but seems to work around
  364. the kernel bug.
  365.  
  366. * Inability to send an Alt-modified key, when Emacs is communicating
  367. directly with an X server.
  368.  
  369. If you have tried to bind an Alt-modified key as a command, and it
  370. does not work to type the command, the first thing you should check is
  371. whether the key is getting through to Emacs.  To do this, type C-h c
  372. followed by the Alt-modified key.  C-h c should say what kind of event
  373. it read.  If it says it read an Alt-modified key, then make sure you
  374. have made the key binding correctly.
  375.  
  376. If C-h c reports an event that doesn't have the Alt modifier, it may
  377. be because your X server has no key for the Alt modifier.  The X
  378. server that comes from MIT does not set up the Alt modifier by
  379. default.
  380.  
  381. If your keyboard has keys named Alt, you can enable them as follows:
  382.  
  383.     xmodmap -e 'add mod2 = Alt_L'
  384.     xmodmap -e 'add mod2 = Alt_R'
  385.  
  386. If the keyboard has just one key named Alt, then only one of those
  387. commands is needed.  The modifier `mod2' is a reasonable choice if you
  388. are using an unmodified MIT version of X.  Otherwise, choose any
  389. modifier bit not otherwise used.
  390.  
  391. If your keyboard does not have keys named Alt, you can use some other
  392. keys.  Use the keysym command in xmodmap to turn a function key (or
  393. some other 'spare' key) into Alt_L or into Alt_R, and then use the
  394. commands show above to make them modifier keys.
  395.  
  396. Note that if you have Alt keys but no Meta keys, Emacs translates Alt
  397. into Meta.  This is because of the great importance of Meta in Emacs.
  398.  
  399. * `Pid xxx killed due to text modification or page I/O error'
  400.  
  401. On HP/UX, you can get that error when the Emacs executable is on an NFS
  402. file system.  HP/UX responds this way if it tries to swap in a page and
  403. does not get a response from the server within a timeout whose default
  404. value is just ten seconds.
  405.  
  406. If this happens to you, extend the timeout period.
  407.  
  408. * `expand-file-name' fails to work on any but the machine you dumped Emacs on.
  409.  
  410. On Ultrix, if you use any of the functions which look up information
  411. in the passwd database before dumping Emacs (say, by using
  412. expand-file-name in site-init.el), then those functions will not work
  413. in the dumped Emacs on any host but the one Emacs was dumped on.
  414.  
  415. The solution?  Don't use expand-file-name in site-init.el, or in
  416. anything it loads.  Yuck - some solution.
  417.  
  418. I'm not sure why this happens; if you can find out exactly what is
  419. going on, and perhaps find a fix or a workaround, please let us know.
  420. Perhaps the YP functions cache some information, the cache is included
  421. in the dumped Emacs, and is then inaccurate on any other host.
  422.  
  423. * On some variants of SVR4, Emacs does not work at all with X.
  424.  
  425. Try defining BROKEN_FIONREAD in your config.h file.  If this solves
  426. the problem, please send a bug report to tell us this is needed; be
  427. sure to say exactly what type of machine and system you are using.
  428.  
  429. * Linking says that the functions insque and remque are undefined.
  430.  
  431. Change oldXMenu/Makefile by adding insque.o to the variable OBJS.
  432.  
  433. * Emacs fails to understand most Internet host names, even though
  434. the names work properly with other programs on the same system.
  435. * Emacs won't work with X-windows if the value of DISPLAY is HOSTNAME:0.
  436. * GNUs can't make contact with the specified host for nntp.
  437.  
  438. This typically happens on Suns and other systems that use shared
  439. libraries.  The cause is that the site has installed a version of the
  440. shared library which uses a name server--but has not installed a
  441. similar version of the unshared library which Emacs uses.
  442.  
  443. The result is that most programs, using the shared library, work with
  444. the nameserver, but Emacs does not.
  445.  
  446. The fix is to install an unshared library that corresponds to what you
  447. installed in the shared library, and then relink Emacs.
  448.  
  449. On SunOS 4.1, simply define HAVE_RES_INIT.
  450.  
  451. If you have already installed the name resolver in the file libresolv.a,
  452. then you need to compile Emacs to use that library.  The easiest way to
  453. do this is to add to config.h a definition of LIBS_SYSTEM, LIBS_MACHINE
  454. or LIB_STANDARD which uses -lresolv.  Watch out!  If you redefine a macro
  455. that is already in use in your configuration to supply some other libraries,
  456. be careful not to lose the others.
  457.  
  458. Thus, you could start by adding this to config.h:
  459.  
  460. #define LIBS_SYSTEM -lresolv
  461.  
  462. Then if this gives you an error for redefining a macro, and you see that
  463. the s- file defines LIBS_SYSTEM as -lfoo -lbar, you could change config.h
  464. again to say this:
  465.  
  466. #define LIBS_SYSTEM -lresolv -lfoo -lbar
  467.  
  468. * On a Sun running SunOS 4.1.1, you get this error message from GNU ld:
  469.  
  470.     /lib/libc.a(_Q_sub.o): Undefined symbol __Q_get_rp_rd referenced from text segment 
  471.  
  472. The problem is in the Sun shared C library, not in GNU ld.
  473.  
  474. The solution is to install Patch-ID# 100267-03 from Sun.
  475.  
  476. * Self documentation messages are garbled.
  477.  
  478. This means that the file `etc/DOC-...' doesn't properly correspond
  479. with the Emacs executable.  Redumping Emacs and then installing the
  480. corresponding pair of files should fix the problem.
  481.  
  482. * Trouble using ptys on AIX.
  483.  
  484. People often install the pty devices on AIX incorrectly.
  485. Use `smit pty' to reinstall them properly.
  486.  
  487. * Shell mode on HP/UX gives the message, "`tty`: Ambiguous".
  488.  
  489. christos@theory.tn.cornell.edu says:
  490.  
  491. The problem is that in your .cshrc you have something that tries to
  492. execute `tty`. If you are not running the shell on a real tty then 
  493. tty will print "not a tty". Csh expects one word in some places, 
  494. but tty is giving it back 3.
  495.  
  496. The solution is to add a pair of quotes around `tty` to make it a single
  497. word: 
  498.  
  499. if (`tty` == "/dev/console") 
  500.  
  501. should be changed to:
  502.  
  503. if ("`tty`" == "/dev/console") 
  504.  
  505. Even better, move things that set up terminal sections out of .cshrc
  506. and into .login.
  507.  
  508. * Using X Windows, control-shift-leftbutton makes Emacs hang.
  509.  
  510. Use the shell command `xset bc' to make the old X Menu package work.
  511.  
  512. * Emacs running under X Windows does not handle mouse clicks.
  513. * `emacs -geometry 80x20' finds a file named `80x20'.
  514.  
  515. One cause of such problems is having (setq term-file-prefix nil) in
  516. your .emacs file.  Another cause is a bad value of EMACSLOADPATH in
  517. the environment.
  518.  
  519. * Emacs gets error message from linker on Sun.
  520.  
  521. If the error message says that a symbol such as `f68881_used' or
  522. `ffpa_used' or `start_float' is undefined, this probably indicates
  523. that you have compiled some libraries, such as the X libraries, 
  524. with a floating point option other than the default.
  525.  
  526. It's not terribly hard to make this work with small changes in
  527. crt0.c together with linking with Fcrt1.o, Wcrt1.o or Mcrt1.o.
  528. However, the easiest approach is to build Xlib with the default
  529. floating point option: -fsoft.
  530.  
  531. * Emacs fails to get default settings from X Windows server.
  532.  
  533. The X library in X11R4 has a bug; it interchanges the 2nd and 3rd
  534. arguments to XGetDefaults.  Define the macro XBACKWARDS in config.h to
  535. tell Emacs to compensate for this.
  536.  
  537. I don't believe there is any way Emacs can determine for itself
  538. whether this problem is present on a given system.
  539.  
  540. * Keyboard input gets confused after a beep when using a DECserver
  541.   as a concentrator.
  542.  
  543. This problem seems to be a matter of configuring the DECserver to use
  544. 7 bit characters rather than 8 bit characters.
  545.  
  546. * M-x shell persistently reports "Process shell exited abnormally with code 1".
  547.  
  548. This happened on Suns as a result of what is said to be a bug in Sunos
  549. version 4.0.x.  The only fix was to reboot the machine. 
  550.  
  551. * Programs running under terminal emulator do not recognize `emacs'
  552.   terminal type.
  553.  
  554. The cause of this is a shell startup file that sets the TERMCAP
  555. environment variable.  The terminal emulator uses that variable to
  556. provide the information on the special terminal type that Emacs
  557. emulates.
  558.  
  559. Rewrite your shell startup file so that it does not change TERMCAP
  560. in such a case.  You could use the following conditional which sets
  561. it only if it is undefined.
  562.  
  563.     if ( ! ${?TERMCAP} ) setenv TERMCAP ~/my-termcap-file
  564.  
  565. Or you could set TERMCAP only when you set TERM--which should not
  566. happen in a non-login shell.
  567.  
  568. * X Windows doesn't work if DISPLAY uses a hostname.
  569.  
  570. People have reported kernel bugs in certain systems that cause Emacs
  571. not to work with X Windows if DISPLAY is set using a host name.  But
  572. the problem does not occur if DISPLAY is set to `unix:0.0'.  I think
  573. the bug has to do with SIGIO or FIONREAD.
  574.  
  575. You may be able to compensate for the bug by doing (set-input-mode nil nil).
  576. However, that has the disadvantage of turning off interrupts, so that
  577. you are unable to quit out of a Lisp program by typing C-g.
  578.  
  579. The easy way to do this is to put 
  580.  
  581.   (setq x-sigio-bug t)
  582.  
  583. in your site-init.el file.
  584.  
  585. * Problem with remote X server on Suns.
  586.  
  587. On a Sun, running Emacs on one machine with the X server on another
  588. may not work if you have used the unshared system libraries.  This
  589. is because the unshared libraries fail to use YP for host name lookup.
  590. As a result, the host name you specify may not be recognized.
  591.  
  592. * Shell mode ignores interrupts on Apollo Domain
  593.  
  594. You may find that M-x shell prints the following message:
  595.  
  596.    Warning: no access to tty; thus no job control in this shell...
  597.  
  598. This can happen if there are not enough ptys on your system.
  599. Here is how to make more of them.
  600.  
  601.     % cd /dev
  602.     % ls pty*
  603.     # shows how many pty's you have. I had 8, named pty0 to pty7)
  604.     % /etc/crpty 8
  605.     # creates eight new pty's
  606.  
  607. * Fatal signal in the command  temacs -l loadup inc dump
  608.  
  609. This command is the final stage of building Emacs.  It is run by the
  610. Makefile in the src subdirectory, or by build.com on VMS.
  611.  
  612. It has been known to get fatal errors due to insufficient swapping
  613. space available on the machine.
  614.  
  615. On 68000's, it has also happened because of bugs in the
  616. subroutine `alloca'.  Verify that `alloca' works right, even
  617. for large blocks (many pages).
  618.  
  619. * test-distrib says that the distribution has been clobbered
  620. * or, temacs prints "Command key out of range 0-127"
  621. * or, temacs runs and dumps xemacs, but xemacs totally fails to work.
  622. * or, temacs gets errors dumping xemacs
  623.  
  624. This can be because the .elc files have been garbled.  Do not be
  625. fooled by the fact that most of a .elc file is text: these are
  626. binary files and can contain all 256 byte values.
  627.  
  628. In particular `shar' cannot be used for transmitting GNU Emacs.
  629. It typically truncates "lines".  What appear to be "lines" in
  630. a binary file can of course be of any length.  Even once `shar'
  631. itself is made to work correctly, `sh' discards null characters
  632. when unpacking the shell archive.
  633.  
  634. I have also seen character \177 changed into \377.  I do not know
  635. what transfer means caused this problem.  Various network
  636. file transfer programs are suspected of clobbering the high bit.
  637.  
  638. If you have a copy of Emacs that has been damaged in its
  639. nonprinting characters, you can fix them:
  640.  
  641.  1) Record the names of all the .elc files.
  642.  2) Delete all the .elc files.
  643.  3) Recompile alloc.c with a value of PURESIZE twice as large.
  644.      You might as well save the old alloc.o.
  645.  4) Remake xemacs.  It should work now.
  646.  5) Running xemacs, do Meta-x byte-compile-file repeatedly
  647.   to recreate all the .elc files that used to exist.
  648.   You may need to increase the value of the variable
  649.   max-lisp-eval-depth to succeed in running the compiler interpreted
  650.   on certain .el files.  400 was sufficient as of last report.
  651.  6) Reinstall the old alloc.o (undoing changes to alloc.c if any)
  652.   and remake temacs.
  653.  7) Remake xemacs.  It should work now, with valid .elc files.
  654.  
  655. * temacs prints "Pure Lisp storage exhausted"
  656.  
  657. This means that the Lisp code loaded from the .elc and .el
  658. files during  temacs -l loadup inc dump  took up more
  659. space than was allocated.
  660.  
  661. This could be caused by
  662.  1) adding code to the preloaded Lisp files
  663.  2) adding more preloaded files in loadup.el
  664.  3) having a site-init.el or site-load.el which loads files.
  665.    Note that ANY site-init.el or site-load.el is nonstandard;
  666.    if you have received Emacs from some other site
  667.    and it contains a site-init.el or site-load.el file, consider
  668.    deleting that file.
  669.  4) getting the wrong .el or .elc files
  670.    (not from the directory you expected).
  671.  5) deleting some .elc files that are supposed to exist.
  672.    This would cause the source files (.el files) to be
  673.    loaded instead.  They take up more room, so you lose.
  674.  6) a bug in the Emacs distribution which underestimates
  675.    the space required.
  676.  
  677. If the need for more space is legitimate, change the definition
  678. of PURESIZE in puresize.h.
  679.  
  680. But in some of the cases listed above, this problem is a consequence
  681. of something else that is wrong.  Be sure to check and fix the real
  682. problem.
  683.  
  684. * Changes made to .el files do not take effect.
  685.  
  686. You may have forgotten to recompile them into .elc files.
  687. Then the old .elc files will be loaded, and your changes
  688. will not be seen.  To fix this, do M-x byte-recompile-directory
  689. and specify the directory that contains the Lisp files.
  690.  
  691. Emacs should print a warning when loading a .elc file which is older
  692. than the corresponding .el file.
  693.  
  694. * The dumped Emacs (xemacs) crashes when run, trying to write pure data.
  695.  
  696. Two causes have been seen for such problems.
  697.  
  698. 1) On a system where getpagesize is not a system call, it is defined
  699. as a macro.  If the definition (in both unexec.c and malloc.c) is wrong,
  700. it can cause problems like this.  You might be able to find the correct
  701. value in the man page for a.out (5).
  702.  
  703. 2) Some systems allocate variables declared static among the
  704. initialized variables.  Emacs makes all initialized variables in most
  705. of its files pure after dumping, but the variables declared static and
  706. not initialized are not supposed to be pure.  On these systems you
  707. may need to add "#define static" to the m- or the s- file.
  708.  
  709. * Compilation errors on VMS.
  710.  
  711. You will get warnings when compiling on VMS because there are
  712. variable names longer than 32 (or whatever it is) characters.
  713. This is not an error.  Ignore it.
  714.  
  715. VAX C does not support #if defined(foo).  Uses of this construct
  716. were removed, but some may have crept back in.  They must be rewritten.
  717.  
  718. There is a bug in the C compiler which fails to sign extend characters
  719. in conditional expressions.  The bug is:
  720.     char c = -1, d = 1;
  721.     int i;
  722.  
  723.     i = d ? c : d;
  724. The result is i == 255;  the fix is to typecast the char in the
  725. conditional expression as an (int).  Known occurrences of such
  726. constructs in Emacs have been fixed.
  727.  
  728. * rmail gets error getting new mail
  729.  
  730. rmail gets new mail from /usr/spool/mail/$USER using a program
  731. called `movemail'.  This program interlocks with /bin/mail using
  732. the protocol defined by /bin/mail.
  733.  
  734. There are two different protocols in general use.  One of them uses
  735. the `flock' system call.  The other involves creating a lock file;
  736. `movemail' must be able to write in /usr/spool/mail in order to do
  737. this.  You control which one is used by defining, or not defining,
  738. the macro MAIL_USE_FLOCK in config.h or the m- or s- file it includes.
  739. IF YOU DON'T USE THE FORM OF INTERLOCKING THAT IS NORMAL ON YOUR
  740. SYSTEM, YOU CAN LOSE MAIL!
  741.  
  742. If your system uses the lock file protocol, and fascist restrictions
  743. prevent ordinary users from writing the lock files in /usr/spool/mail,
  744. you may need to make `movemail' setgid to a suitable group such as
  745. `mail'.  You can use these commands (as root):
  746.  
  747.     chgrp mail movemail
  748.     chmod 2755 movemail
  749.  
  750. If your system uses the lock file protocol, and fascist restrictions
  751. prevent ordinary users from writing the lock files in /usr/spool/mail,
  752. you may need to make `movemail' setgid to a suitable group such as
  753. `mail'.  To do this,  use the following commands (as root) after doing the
  754. make install.
  755.  
  756.     chgrp mail movemail
  757.     chmod 2755 movemail
  758.  
  759. Installation normally copies movemail from the build directory to an
  760. installation directory which is usually under /usr/local/lib.  The
  761. installed copy of movemail is usually in the directory
  762. /usr/local/lib/emacs/VERSION/TARGET.  You must change the group and
  763. mode of the installed copy; changing the group and mode of the build
  764. directory copy is ineffective.
  765.  
  766. (Exception: if you configure with --run-in-place, then the build
  767. directory is also the installation directory; there is only one
  768. copy of movemail, and that is the one to change.)
  769.  
  770. * Emacs spontaneously displays "I-search: " at the bottom of the screen.
  771.  
  772. This means that Control-S/Control-Q (XON/XOFF) "flow control" is being
  773. used.  C-s/C-q flow control is bad for Emacs editors because it takes
  774. away C-s and C-q as user commands.  Since editors do not output long
  775. streams of text without user commands, there is no need for a
  776. user-issuable "stop output" command in an editor; therefore, a
  777. properly designed flow control mechanism would transmit all possible
  778. input characters without interference.  Designing such a mechanism is
  779. easy, for a person with at least half a brain.
  780.  
  781. There are three possible reasons why flow control could be taking place:
  782.  
  783.   1) Terminal has not been told to disable flow control
  784.   2) Insufficient padding for the terminal in use
  785.   3) Some sort of terminal concentrator or line switch is responsible
  786.  
  787. First of all, many terminals have a set-up mode which controls whether
  788. they generate XON/XOFF flow control characters.  This must be set to
  789. "no XON/XOFF" in order for Emacs to work.  Sometimes there is an
  790. escape sequence that the computer can send to turn flow control off
  791. and on.  If so, perhaps the termcap `ti' string should turn flow
  792. control off, and the `te' string should turn it on.
  793.  
  794. Once the terminal has been told "no flow control", you may find it
  795. needs more padding.  The amount of padding Emacs sends is controlled
  796. by the termcap entry for the terminal in use, and by the output baud
  797. rate as known by the kernel.  The shell command `stty' will print
  798. your output baud rate; `stty' with suitable arguments will set it if
  799. it is wrong.  Setting to a higher speed causes increased padding.  If
  800. the results are wrong for the correct speed, there is probably a
  801. problem in the termcap entry.  You must speak to a local Unix wizard
  802. to fix this.  Perhaps you are just using the wrong terminal type.
  803.  
  804. For terminals that lack a "no flow control" mode, sometimes just
  805. giving lots of padding will prevent actual generation of flow control
  806. codes.  You might as well try it.
  807.  
  808. If you are really unlucky, your terminal is connected to the computer
  809. through a concentrator which sends XON/XOFF flow control to the
  810. computer, or it insists on sending flow control itself no matter how
  811. much padding you give it.  Unless you can figure out how to turn flow
  812. control off on this concentrator (again, refer to your local wizard),
  813. you are screwed!  You should have the terminal or concentrator
  814. replaced with a properly designed one.  In the mean time, some drastic
  815. measures can make Emacs semi-work.
  816.  
  817. You can make Emacs ignore C-s and C-q and let the operating system
  818. handle them.  To do this on a per-session basis, just type M-x
  819. enable-flow-control RET.  You will see a message that C-\ and C-^ are
  820. now translated to C-s and C-q.  (Use the same command M-x
  821. enable-flow-control to turn *off* this special mode.  It toggles flow
  822. control handling.)
  823.  
  824. If C-\ and C-^ are inconvenient for you (for example, if one of them
  825. is the escape character of your terminal concentrator), you can choose
  826. other characters by setting the variables flow-control-c-s-replacement
  827. and flow-control-c-q-replacement.  But choose carefully, since all
  828. other control characters are already used by emacs.
  829.  
  830. IMPORTANT: if you type C-s by accident while flow control is enabled,
  831. Emacs output will freeze, and you will have to remember to type C-q in
  832. order to continue.
  833.  
  834. If you work in an environment where a majority of terminals of a
  835. certain type are flow control hobbled, you can use the function
  836. `enable-flow-control-on' to turn on this flow control avoidance scheme
  837. automatically.  Here is an example:
  838.  
  839. (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
  840.  
  841. If this isn't quite correct (e.g. you have a mixture of flow-control hobbled
  842. and good vt200 terminals), you can still run enable-flow-control
  843. manually.
  844.  
  845. I have no intention of ever redesigning the Emacs command set for the
  846. assumption that terminals use C-s/C-q flow control.  XON/XOFF flow
  847. control technique is a bad design, and terminals that need it are bad
  848. merchandise and should not be purchased.  Now that X is becoming
  849. widespread, XON/XOFF seems to be on the way out.  If you can get some
  850. use out of GNU Emacs on inferior terminals, more power to you, but I
  851. will not make Emacs worse for properly designed systems for the sake
  852. of inferior systems.
  853.  
  854. * Control-S and Control-Q commands are ignored completely.
  855.  
  856. For some reason, your system is using brain-damaged C-s/C-q flow
  857. control despite Emacs's attempts to turn it off.  Perhaps your
  858. terminal is connected to the computer through a concentrator
  859. that wants to use flow control.
  860.  
  861. You should first try to tell the concentrator not to use flow control.
  862. If you succeed in this, try making the terminal work without
  863. flow control, as described in the preceding section.
  864.  
  865. If that line of approach is not successful, map some other characters
  866. into C-s and C-q using keyboard-translate-table.  The example above
  867. shows how to do this with C-^ and C-\.
  868.  
  869. * Control-S and Control-Q commands are ignored completely on a net connection.
  870.  
  871. Some versions of rlogin (and possibly telnet) do not pass flow
  872. control characters to the remote system to which they connect.
  873. On such systems, emacs on the remote system cannot disable flow
  874. control on the local system.
  875.  
  876. One way to cure this is to disable flow control on the local host
  877. (the one running rlogin, not the one running rlogind) using the
  878. stty command, before starting the rlogin process.  On many systems,
  879. "stty start u stop u" will do this.
  880.  
  881. Some versions of tcsh will prevent even this from working.  One way
  882. around this is to start another shell before starting rlogin, and
  883. issue the stty command to disable flow control from that shell.
  884.  
  885. If none of these methods work, the best solution is to type
  886. M-x enable-flow-control at the beginning of your emacs session, or
  887. if you expect the problem to continue, add a line such as the
  888. following to your .emacs (on the host running rlogind):
  889.  
  890. (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
  891.  
  892. See the entry about spontaneous display of I-search (above) for more
  893. info.
  894.  
  895. * Screen is updated wrong, but only on one kind of terminal.
  896.  
  897. This could mean that the termcap entry you are using for that
  898. terminal is wrong, or it could mean that Emacs has a bug handing
  899. the combination of features specified for that terminal.
  900.  
  901. The first step in tracking this down is to record what characters
  902. Emacs is sending to the terminal.  Execute the Lisp expression
  903. (open-termscript "./emacs-script") to make Emacs write all
  904. terminal output into the file ~/emacs-script as well; then do
  905. what makes the screen update wrong, and look at the file
  906. and decode the characters using the manual for the terminal.
  907. There are several possibilities:
  908.  
  909. 1) The characters sent are correct, according to the terminal manual.
  910.  
  911. In this case, there is no obvious bug in Emacs, and most likely you
  912. need more padding, or possibly the terminal manual is wrong.
  913.  
  914. 2) The characters sent are incorrect, due to an obscure aspect
  915.  of the terminal behavior not described in an obvious way
  916.  by termcap.
  917.  
  918. This case is hard.  It will be necessary to think of a way for
  919. Emacs to distinguish between terminals with this kind of behavior
  920. and other terminals that behave subtly differently but are
  921. classified the same by termcap; or else find an algorithm for
  922. Emacs to use that avoids the difference.  Such changes must be
  923. tested on many kinds of terminals.
  924.  
  925. 3) The termcap entry is wrong.
  926.  
  927. See the file etc/TERMS for information on changes
  928. that are known to be needed in commonly used termcap entries
  929. for certain terminals.
  930.  
  931. 4) The characters sent are incorrect, and clearly cannot be
  932.  right for any terminal with the termcap entry you were using.
  933.  
  934. This is unambiguously an Emacs bug, and can probably be fixed
  935. in termcap.c, tparam.c, term.c, scroll.c, cm.c or dispnew.c.
  936.  
  937. * Output from Control-V is slow.
  938.  
  939. On many bit-map terminals, scrolling operations are fairly slow.
  940. Often the termcap entry for the type of terminal in use fails
  941. to inform Emacs of this.  The two lines at the bottom of the screen
  942. before a Control-V command are supposed to appear at the top after
  943. the Control-V command.  If Emacs thinks scrolling the lines is fast,
  944. it will scroll them to the top of the screen.
  945.  
  946. If scrolling is slow but Emacs thinks it is fast, the usual reason is
  947. that the termcap entry for the terminal you are using does not
  948. specify any padding time for the `al' and `dl' strings.  Emacs
  949. concludes that these operations take only as much time as it takes to
  950. send the commands at whatever line speed you are using.  You must
  951. fix the termcap entry to specify, for the `al' and `dl', as much
  952. time as the operations really take.
  953.  
  954. Currently Emacs thinks in terms of serial lines which send characters
  955. at a fixed rate, so that any operation which takes time for the
  956. terminal to execute must also be padded.  With bit-map terminals
  957. operated across networks, often the network provides some sort of
  958. flow control so that padding is never needed no matter how slow
  959. an operation is.  You must still specify a padding time if you want
  960. Emacs to realize that the operation takes a long time.  This will
  961. cause padding characters to be sent unnecessarily, but they do
  962. not really cost much.  They will be transmitted while the scrolling
  963. is happening and then discarded quickly by the terminal.
  964.  
  965. Most bit-map terminals provide commands for inserting or deleting
  966. multiple lines at once.  Define the `AL' and `DL' strings in the
  967. termcap entry to say how to do these things, and you will have
  968. fast output without wasted padding characters.  These strings should
  969. each contain a single %-spec saying how to send the number of lines
  970. to be scrolled.  These %-specs are like those in the termcap
  971. `cm' string.
  972.  
  973. You should also define the `IC' and `DC' strings if your terminal
  974. has a command to insert or delete multiple characters.  These
  975. take the number of positions to insert or delete as an argument.
  976.  
  977. A `cs' string to set the scrolling region will reduce the amount
  978. of motion you see on the screen when part of the screen is scrolled.
  979.  
  980. * Your Delete key sends a Backspace to the terminal, using an AIXterm.
  981.  
  982. The solution is to include in your .Xdefaults the lines:
  983.  
  984.    *aixterm.Translations: #override <Key>BackSpace: string(0x7f)
  985.    aixterm*ttyModes: erase ^?
  986.  
  987. This makes your Backspace key send DEL (ASCII 127).
  988.  
  989. * You type Control-H (Backspace) expecting to delete characters.
  990.  
  991. Put `stty dec' in your .login file and your problems will disappear
  992. after a day or two.
  993.  
  994. The choice of Backspace for erasure was based on confusion, caused by
  995. the fact that backspacing causes erasure (later, when you type another
  996. character) on most display terminals.  But it is a mistake.  Deletion
  997. of text is not the same thing as backspacing followed by failure to
  998. overprint.  I do not wish to propagate this confusion by conforming
  999. to it.
  1000.  
  1001. For this reason, I believe `stty dec' is the right mode to use,
  1002. and I have designed Emacs to go with that.  If there were a thousand
  1003. other control characters, I would define Control-h to delete as well;
  1004. but there are not very many other control characters, and I think
  1005. that providing the most mnemonic possible Help character is more
  1006. important than adapting to people who don't use `stty dec'.
  1007.  
  1008. If you are obstinate about confusing buggy overprinting with deletion,
  1009. you can redefine Backspace in your .emacs file:
  1010.   (global-set-key "\b" 'delete-backward-char)
  1011. You may then wish to put the function  help-command  on some
  1012. other key.  I leave to you the task of deciding which key.
  1013.  
  1014. * Editing files through RFS gives spurious "file has changed" warnings.
  1015. It is possible that a change in Emacs 18.37 gets around this problem,
  1016. but in case not, here is a description of how to fix the RFS bug that
  1017. causes it.
  1018.  
  1019.     There was a serious pair of bugs in the handling of the fsync() system
  1020.     call in the RFS server.
  1021.  
  1022.     The first is that the fsync() call is handled as another name for the
  1023.     close() system call (!!).  It appears that fsync() is not used by very
  1024.     many programs; Emacs version 18 does an fsync() before closing files
  1025.     to make sure that the bits are on the disk.
  1026.  
  1027.     This is fixed by the enclosed patch to the RFS server.
  1028.  
  1029.     The second, more serious problem, is that fsync() is treated as a
  1030.     non-blocking system call (i.e., it's implemented as a message that
  1031.     gets sent to the remote system without waiting for a reply).  Fsync is
  1032.     a useful tool for building atomic file transactions.  Implementing it
  1033.     as a non-blocking RPC call (when the local call blocks until the sync
  1034.     is done) is a bad idea; unfortunately, changing it will break the RFS
  1035.     protocol.  No fix was supplied for this problem.
  1036.  
  1037.     (as always, your line numbers may vary)
  1038.  
  1039.     % rcsdiff -c -r1.2 serversyscall.c
  1040.     RCS file: RCS/serversyscall.c,v
  1041.     retrieving revision 1.2
  1042.     diff -c -r1.2 serversyscall.c
  1043.     *** /tmp/,RCSt1003677   Wed Jan 28 15:15:02 1987
  1044.     --- serversyscall.c     Wed Jan 28 15:14:48 1987
  1045.     ***************
  1046.     *** 163,169 ****
  1047.         /*
  1048.          * No return sent for close or fsync!
  1049.          */
  1050.     !       if (syscall == RSYS_close || syscall == RSYS_fsync)
  1051.             proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
  1052.         else
  1053.         {
  1054.     --- 166,172 ----
  1055.         /*
  1056.          * No return sent for close or fsync!
  1057.          */
  1058.     !       if (syscall == RSYS_close)
  1059.             proc->p_returnval = deallocate_fd(proc, msg->m_args[0]);
  1060.         else
  1061.         {
  1062.  
  1063. * Vax C compiler bugs affecting Emacs.
  1064.  
  1065. You may get one of these problems compiling Emacs:
  1066.  
  1067.    foo.c line nnn: compiler error: no table entry for op STASG
  1068.    foo.c: fatal error in /lib/ccom
  1069.  
  1070. These are due to bugs in the C compiler; the code is valid C.
  1071. Unfortunately, the bugs are unpredictable: the same construct
  1072. may compile properly or trigger one of these bugs, depending
  1073. on what else is in the source file being compiled.  Even changes
  1074. in header files that should not affect the file being compiled
  1075. can affect whether the bug happens.  In addition, sometimes files
  1076. that compile correctly on one machine get this bug on another machine.
  1077.  
  1078. As a result, it is hard for me to make sure this bug will not affect
  1079. you.  I have attempted to find and alter these constructs, but more
  1080. can always appear.  However, I can tell you how to deal with it if it
  1081. should happen.  The bug comes from having an indexed reference to an
  1082. array of Lisp_Objects, as an argument in a function call:
  1083.   Lisp_Object *args;
  1084.   ...
  1085.    ... foo (5, args[i], ...)...
  1086. putting the argument into a temporary variable first, as in
  1087.   Lisp_Object *args;
  1088.   Lisp_Object tem;
  1089.   ...
  1090.    tem = args[i];
  1091.    ... foo (r, tem, ...)...
  1092. causes the problem to go away.
  1093. The `contents' field of a Lisp vector is an array of Lisp_Objects,
  1094. so you may see the problem happening with indexed references to that.
  1095.  
  1096. * 68000 C compiler problems
  1097.  
  1098. Various 68000 compilers have different problems.
  1099. These are some that have been observed.
  1100.  
  1101. ** Using value of assignment expression on union type loses.
  1102. This means that  x = y = z;  or  foo (x = z);  does not work
  1103. if x is of type Lisp_Object.
  1104.  
  1105. ** "cannot reclaim" error.
  1106.  
  1107. This means that an expression is too complicated.  You get the correct
  1108. line number in the error message.  The code must be rewritten with
  1109. simpler expressions.
  1110.  
  1111. ** XCONS, XSTRING, etc macros produce incorrect code.
  1112.  
  1113. If temacs fails to run at all, this may be the cause.
  1114. Compile this test program and look at the assembler code:
  1115.  
  1116. struct foo { char x; unsigned int y : 24; };
  1117.  
  1118. lose (arg)
  1119.      struct foo arg;
  1120. {
  1121.   test ((int *) arg.y);
  1122. }
  1123.  
  1124. If the code is incorrect, your compiler has this problem.
  1125. In the XCONS, etc., macros in lisp.h you must replace (a).u.val with
  1126. ((a).u.val + coercedummy) where coercedummy is declared as int.
  1127.  
  1128. This problem will not happen if the m-...h file for your type
  1129. of machine defines NO_UNION_TYPE.  That is the recommended setting now.
  1130.  
  1131. * C compilers lose on returning unions
  1132.  
  1133. I hear that some C compilers cannot handle returning a union type.
  1134. Most of the functions in GNU Emacs return type Lisp_Object, which is
  1135. defined as a union on some rare architectures.
  1136.  
  1137. This problem will not happen if the m-...h file for your type
  1138. of machine defines NO_UNION_TYPE.
  1139.  
  1140.